package com.yan.design.strategy;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 策略模式 - 演示
 * @author shengren.yan
 * @create 2022-11-19
 */
@Service
public class TestStrategy {


//        @Qualifier("UserServiceImplB")  指定选择哪个子类执行
//    @Autowired(required = true)
//    private UserService userService;

    private Map<String,UserService> map = new HashMap<>();
    // 构造注入
    public TestStrategy(List<UserService> userServices) {
        for (UserService u : userServices) {
            map.put(u.getType(), u);
        }
    }


    // 根据不同的类型 创建不同的用户 1 普通用户 2 会员 3 超级会员
    public void  addUser(String type){

        // 原代码
//        if (type == "a") {
//            userService.saveUser();
//        } else {
//            // 其他的 userService
//            userService.saveUser();
//        }

        // 策略代码改进
        UserService userService = map.get(type);
        userService.saveUser();

    }

}

